<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  
</body>
<script>

  // - push
  // 功能：末尾新增
  // 参数：要新增的数据
  // 返回值：新增后的长度
  // 是否修改原数组：是
  // var arr = ["hello", 5,6,7, "world"];
  // console.log(arr);
  // var result = arr.push("abc", 123);
  // console.log("返回值为：", result);
  // console.log(arr);
  
  // - pop
  // 功能：删除末尾
  // 参数：无
  // 返回值：删除了的数据
  // 是否修改原数组：是
  // var arr = ["hello", 5,6,7, "world"];
  // console.log(arr);
  // var result = arr.pop();
  // console.log("返回值为：", result);
  // console.log(arr);

  // - shift
  // 功能：删除首位
  // 参数：无
  // 返回值：删除了的数据
  // 是否修改原数组：是
  // var arr = ["hello", 5,6,7, "world"];
  // console.log(arr);
  // var result = arr.shift();
  // console.log("返回值为：", result);
  // console.log(arr);

  // - unshift
  // 功能：首位新增
  // 参数：要新增的数据
  // 返回值：新增之后数组的长度
  // 是否修改原数组：是
  // var arr = ["hello", 5,6,7, "world"];
  // console.log(arr);
  // var result = arr.unshift("abc",456);
  // console.log("返回值为：", result);
  // console.log(arr);

  // - slice
  // 功能：截取
  // 参数：a1开始截取的位置，a2截取到的位置（不含）
  // 返回值：截取到的新数组
  // 是否修改原数组：否
  // var arr = ["hello", 5,6,7, "world"];
  // console.log(arr);
  // var result = arr.slice();
  // var result = arr.slice(2);
  // var result = arr.slice(2, 4);
  // console.log("返回值为：", result);
  // console.log(arr);
  // console.log(arr === result);
  
  // - splice
  // 功能：删除并替换
  // 参数：a1开始删除的索引，a2删除的个数，a3~要插入到删除位置的数据
  // 返回值：删除了的数据，数组形式
  // 是否修改原数组：是
  // var arr = ["hello", 5,6,7, "world"];
  // console.log(arr);
  // var result = arr.splice();
  // var result = arr.splice(2);
  // var result = arr.splice(2, 2);
  // var result = arr.splice(2, 2, 2, 2, 2, "abc");
  // console.log("返回值为：", result);
  // console.log(arr);
  // console.log(arr === result);

  // - sort
  // 功能：排序。默认排序规则为字符的比较规则。可以通过参数修改为数值的比较规则
  // 参数：函数，这个函数自带了两个形参，这个函数必须返回两个形参之差。
  // 返回值：排序之后的老数组
  // 是否修改原数组：是
  // var arr = [67, 108, 2, 9, 365];
  // console.log(arr);
  // var result = arr.sort( function(a,b){ return b-a } );
  // console.log("返回值为：", result);
  // console.log(arr);
  // console.log(arr === result);

  // - join
  // 功能：按照指定连接符将数组中所有数据连接成字符
  // 参数：连接符
  // 返回值：连接之后的字符
  // 是否修改原数组：否
  // var arr = [2023, 5, 23];
  // console.log(arr);
  // var result = arr.join();
  // var result = arr.join("-");
  // console.log("返回值为：", result);
  // console.log(arr);
  // console.log(arr === result);

  // - reverse
  // 功能：翻转数组
  // 参数：无
  // 返回值：翻转之后的老数组
  // 是否修改原数组：是
  // var arr = [2023, 5, 23];
  // console.log(arr);
  // var result = arr.reverse();
  // console.log("返回值为：", result);
  // console.log(arr);
  // console.log(arr === result);
  
  // - concat
  // 功能：合并数据（如果要合并的数据是数组，可以解析一层数组后，再做合并）
  // 参数：要合并的数据
  // 返回值：合并之后的新数组
  // 是否修改原数组：否
  // var arr = [2023, 5, 23];
  // console.log(arr);
  // var result = arr.concat();
  // var result = arr.concat("abc", 365, [4, [5, 6]]);
  // console.log("返回值为：", result);
  // console.log(arr);
  // console.log(arr === result);

  // console.log("=====")
  
  // push的区别
  // var arr2 = ["hello", 5,6,7, "world"];
  // console.log(arr2);
  // var result2 = arr2.push("abc", 365, [4, 5, 6]);
  // console.log("返回值为：", result2);
  // console.log(arr2);

  // - indexOf
  // 功能：根据数据查索引
  // 参数：a1要查询的数据，a2开始查询的位置
  // 返回值：查询到的索引，查不到为-1
  // 是否修改原数组：否
  // var arr = [7,8,4,5,6,7,3,4,5,6,7,8,9];
  // console.log(arr);
  // var result = arr.indexOf(5);
  // var result = arr.indexOf(5, 4);
  // var result = arr.indexOf(5, 9);
  // var result = arr.indexOf(2);
  // console.log("返回值为：", result);
  // console.log(arr);
  // console.log(arr === result);  
</script>
</html>